Mapping Church Attendance in Time

Cross-Sectional View

The focal variable of interest is attend, the item measuring church attendance for the year that preceded the interview date. The questionnaire recorded the responses on the ordinal scale.

Figure caption test

Creating frequency distributions for each of the measurement wave we have:

plot of chunk attend_2000_2011

Here, missing values are used in the calculation of total responses to show the natural attrition in the study. Assuming that attrition is not significantly associated with the outcome measure, we can remove missing values from the calculation of the total and look at prevalence of response endorsements over time.

plot of chunk attend_2000_2011_na

Change in prevalences

Tracing the rate of change of prevalence in a line graph, we see more clearly which categores increase over time (e.g. “Never”), which decline (e.g. “”About once/week), and which stay relatively stable (e.g. “About twice/month”).

plot of chunk attend_freq_lines

Prevalence change and race

Inspecting the prevalence trajectories across races.

plot of chunk attend_freq_lines_race

plot of chunk attend_race_2000

Longitudinal View

Graphs above shows change in the cross-sectional distribution of responses over the years. Modeling the change in these response frequencies is handled well by Markov models. LCM, however, works with longitudinal data, modeling the trajectory of each individual and treating attendance as a continuous outcome.

To demonstrate mapping of individual trajectories to time, let’s select a dataset that would include personal identifyer (id), cohort indicator (byear), wave of measurement (year) and the focal variable of interest - worship attendance (attend).

ds<- dsL %>%  dplyr::filter(year %in% c(2000:2011), id==47) %>%
              dplyr:: select(id, byear, year, attend, attendF)
print(ds)
   id byear year attend              attendF
1  47  1982 2000      5    About twice/month
2  47  1982 2001      2        Once or Twice
3  47  1982 2002      4     About once/month
4  47  1982 2003      2        Once or Twice
5  47  1982 2004      3 Less than once/month
6  47  1982 2005      2        Once or Twice
7  47  1982 2006      2        Once or Twice
8  47  1982 2007      3 Less than once/month
9  47  1982 2008      2        Once or Twice
10 47  1982 2009      1                Never
11 47  1982 2010      1                Never
12 47  1982 2011      1                Never

The view above lists attendance data for subjust with id = 47. Mapping his attendance to time we have .

plot of chunk attend_line_1id

where vertical dimension maps the outcome value and the horizontal maps the time. There will be a trajecory for each of the respondents. Each of such trajectories imply a story, a life scenario. Why one person grows in his religious involvement, while other declines, or never develops an interest in the first place? To demostrate how interpretations of trajectories can vary among individuals consider the following example.
### Example: 4 individuals Attendance trajectories of subjects with ids 4, 25, 35, and 47 are plotted in the next graph

plot of chunk attend_line_4id_years

The respondent id=35 reported attending no worship services in any of the years, while respodent id=25 seemed to frequent it, indicating weekly attendance in 8 out of the 12 years. Individual id=47 started as a fairly regular attendee of religious services in 2000 (5= “about twice a month”), then gradually declined his involvement to nill in 2009 and on. Respondent id=4, on the other hand started off with a rather passive involvement, reporting attended church only “Once or twice” in 2000, maintained a low level of participation throughout the years, only to surge his attendance in 2011. Latent curve models will describe intraindividual trajectories of change, while summarizinig the interindividual similarities and trends.

Changing the metric of time

Previous research in religiousity indicated that age might be one of the primary factors explaining interindividual differences in church attendance. To examine the role of age, we change the metric of time from waves of measurement, as in the previous graph, to biological age. There are, however, a number of ways information about age was recorded.

ds<- dsL %>% dplyr::filter(id %in% c(4,25,35,47),year %in% c(2000:2011)) %>% 
  dplyr::select(idF,attend, year, byear, ageyear, agemon, ageyear) %>% 
  mutate(time=year-2000, age=(year-byear+1), ageCurrent = agemon/12)
print(ds[ds$idF==25,])
   idF attend year byear ageyear agemon time age ageCurrent
13  25      5 2000  1983      17    214    0  18      17.83
14  25      7 2001  1983      18    226    1  19      18.83
15  25      7 2002  1983      19    236    2  20      19.67
16  25      2 2003  1983      21    254    3  21      21.17
17  25      7 2004  1983      21    261    4  22      21.75
18  25      5 2005  1983      22    272    5  23      22.67
19  25      7 2006  1983      23    284    6  24      23.67
20  25      5 2007  1983      24    295    7  25      24.58
21  25      7 2008  1983      25    307    8  26      25.58
22  25      7 2009  1983      26    319    9  27      26.58
23  25      7 2010  1983      27    332   10  28      27.67
24  25      7 2011  1983      28    342   11  29      28.50

Note that for person id = 25 the age was recorded as 21 years for both 2003 and 2004. However, when you examine age in months (agemon) you can see this is rounding issue that disappears once a more precise scale is used. To avoid this potentially confusing peculiarity, age in years will be either calculated as (age = year - byear + 1)

Plotting age, caclulated as age = year - byear + 1

plot of chunk attend_line_4id_age

ds<- dsL %>% dplyr::filter(id %in% c(4,25,35,47),year %in% c(2000:2011)) %>% 
  dplyr::select(idF,year,attend,agemon,ageyear) %>% 
  mutate(time=year-2000, age=ageyear)
head(ds,12)
   idF year attend agemon ageyear time age
1    4 2000      2    238      19    0  19
2    4 2001      1    251      20    1  20
3    4 2002      3    262      21    2  21
4    4 2003      1    276      22    3  22
5    4 2004      2    287      23    4  23
6    4 2005      2    297      24    5  24
7    4 2006      2    309      25    6  25
8    4 2007      2    320      26    7  26
9    4 2008      2    336      27    8  27
10   4 2009      1    344      28    9  28
11   4 2010      2    357      29   10  29
12   4 2011      5    368      30   11  30

Plotting age, caclulated as age = ageyear . Notice that when compared to the rounded agemon, variable ageyear provides less accurate measure of age than year - byear + 1

plot of chunk attend_line_4id_age2

Plotting age, caclulated as ageD = agemon/12 . This is the most precise age variable and maybe used when models require a finer age resolutions.

ds<- dsL %>% dplyr::filter(id %in% c(4,25,35,47),year %in% c(2000:2011)) %>% 
  dplyr::select(idF,year,attend,agemon,ageyear,byear) %>% 
  mutate(time=year-2000, age=agemon/12)
head(ds,12)
   idF year attend agemon ageyear byear time   age
1    4 2000      2    238      19  1981    0 19.83
2    4 2001      1    251      20  1981    1 20.92
3    4 2002      3    262      21  1981    2 21.83
4    4 2003      1    276      22  1981    3 23.00
5    4 2004      2    287      23  1981    4 23.92
6    4 2005      2    297      24  1981    5 24.75
7    4 2006      2    309      25  1981    6 25.75
8    4 2007      2    320      26  1981    7 26.67
9    4 2008      2    336      27  1981    8 28.00
10   4 2009      1    344      28  1981    9 28.67
11   4 2010      2    357      29  1981   10 29.75
12   4 2011      5    368      30  1981   11 30.67

plot of chunk attend_line_4id_age3

=== Read more in ./Models/Descriptives:
+ Metrics - how values of items are labeled + Descriptives - basic stats of various items
+ Attendance - focus on church attendence over time
+ Databox